import pygame

#设置通用属性
GB_COLOR = pygame.Color(0,0,0)
SCREEN_WIDTH = 700
SCREEN_HEIGHT = 500
TEXT_COLOR = pygame.Color(255,0,0)

class Tank():
    def __init__(self,left:int,top:int) -> None:
        #设置我方坦克的图片资源
        self.images = {
            "U":pygame.image.load("./img/p1tankU.gif"),
            "D":pygame.image.load("./img/p1tankD.gif"),
            "L":pygame.image.load("./img/p1tankL.gif"),
            "R":pygame.image.load("./img/p1tankR.gif")
        }
        #设置我方坦克的方向
        self.direction = "U"
        #获取图片信息
        self.image = self.images.get(self.direction)
        #获取图形的矩形
        self.rect = self.image.get_rect()
        #设置我方坦克位置
        self.rect.left = left
        self.rect.top = top

    def display_tank(self) -> None:
        """
        显示坦克
        """
        #获取最新坦克的朝向位置图片
        self.image = self.images.get(self.direction)
        MainGame.window.blit(self.image,self.rect)
    def move(self) -> None:
        """
        移动坦克
        """
        pass
    def shot(self) -> None:
        """
        坦克的射击
        """
        pass
class Mytank(Tank):
    """
    我方坦克类
    """
    def __init__(self) -> None:
        pass
class Enemytank(Tank):
    """
    敌方坦克类
    """
    def __init__(self) -> None:
        pass

class Bullet:
    """ 
    子弹类 
    """
    def __init__(self) -> None:
        pass
    def display_bullet(self) -> None:
        """
        显示子弹
        """
        pass
    def move(self) -> None:
        """
        子弹的移动
        """
        pass

class Wall:
    """
    墙壁类
    """
    def __init__(self) -> None:
        pass
    def diaplay_wall(self) -> None:
        """
        显示墙壁
        """
        pass

class Explode:
    """
    爆炸效果类
    """
    def __init__(self) -> None:
        pass
    def display_explode(self) -> None:
        """
        显示爆炸效果
        """
        pass

class Music:
    """
    音效类
    """
    def __init__(self) -> None:
        pass
    def play(self) -> None:
        """
        播放音效
        """
        pass

class MainGame:
    """
    游戏主窗口类
    """
    #游戏主窗口对象
    window = None
    #设置我方坦克
    my_tank = None

    def __init__(self) -> None:
        pass
    def start_game(self) -> None:
        """
        开始游戏
        """
        # 初始化游戏窗口
        pygame.display.init()
        # 创建一个窗口
        MainGame.window=pygame.display.set_mode((SCREEN_WIDTH,SCREEN_HEIGHT))
        # 设置窗口标题
        pygame.display.set_caption("坦克大战1.0")
        #创建我方坦克
        MainGame.my_tank = Tank(350,200)
        #

        # 刷新游戏窗口
        while True:
            #给窗口设置填充色
            MainGame.window.fill(GB_COLOR)
            #增加提示文字
            #1.要增加文字内容
            num = 6
            text = self.get_text_surface(f'敌方坦克剩余数量{num}')
            #2.如何把文字加上
            MainGame.window.blit(text,(10,10))
            #增加事件
            self.get_event()
            #显示我方坦克
            MainGame.my_tank.display_tank()

            pygame.display.update()
            
    def get_text_surface(self,text:str) -> None:
        """
        获取文字的 图片
        """
        #初始化字体模块
        pygame.font.init()
        #获取可以使用的字体
        #print(pygame.font.get_fonts())
        #创建字体
        font = pygame.font.SysFont("kaiti",18)
        #绘制文字信息
        text_surface = font.render(text,True,TEXT_COLOR)
        #将绘制的文字信息返回
        return text_surface
    
    def get_event(self) -> None:
        """
        获取事件
        """
        #获取所有事件
        event_list = pygame.event.get()
        #遍历事件
        for event in event_list:
            #判断是什么事件，然后做出相应的处理
            if event.type==pygame.QUIT:
                #点击关闭按钮
                self.end_Game()
            if event.type == pygame.KEYDOWN:
                #按下键盘
                if event.key == pygame.K_LEFT:
                    print("坦克向左移动")
                    #修改方向
                    MainGame.my_tank.direction = "L"
                    #通过坦克对象调用即可
                    MainGame.my_tank.move()

                elif event.key == pygame.K_RIGHT:
                    print("坦克向右移动")
                    #修改方向
                    MainGame.my_tank.direction = "R"
                    MainGame.my_tank.move()

                elif event.key == pygame.K_UP:
                    print("坦克向上移动")
                    #修改方向
                    MainGame.my_tank.direction = "U"
                    MainGame.my_tank.move()

                elif event.key == pygame.K_DOWN:
                    print("坦克向下移动")
                    #修改方向
                    MainGame.my_tank.direction = "D"
                    MainGame.my_tank.move()
                

    def end_game(self) -> None:
        """
        结束游戏
        """
        print("谢谢使用，欢迎再次使用")
        exit()

if __name__ == "__main__":
    #调用MainGame类中的start_Game方法，开始游戏
    MainGame().start_game()